#ifndef XMYSQL_H
#define XMYSQL_H

#include "interface.h"
#include <QSqlDatabase>


class XMysql : public XInterface
{
    Q_OBJECT
public:
    static XMysql& getIntance()
    {
        static XMysql mysql;
        return  mysql;
    }

    // 连接数据库
    bool connectToDB(QString ip, int port, QString db, QString user, QString password );


    // 注册用户
    void registerUser(Core::User &user) override;
    // 更新用户
    void updateUser(Core::User &user) override;
    // 登录用户
    void login(Core::User &user) override;

    // 添加动漫
    void addAnime(Core::Anime &anime) override;
    // 删除动漫
    void deleteAnime(Core::Anime &anime) override;
    // 更新动漫
    void updateAnime(Core::Anime &anime) override;
    // 通过名称查找动漫
    void getAnimeByName(QString name) override;
    // 获取所有动漫信息
    QList<Core::Anime> getAllAnimes() override;

    // 分类浏览
    void browseByCategory(QString category) override;

    // 标签浏览
    QList<Core::Anime> browseByTag(Core::Filter &fileter) override;

    // 评论动漫
    void commentAnime(Core::Comment &comment) override;
    // 审核动漫评论
    void acceptComment(Core::Comment &comment) override;
    // 审核动漫评论
    void rejectComment(Core::Comment &comment) override;
    // 获取待审核动漫
    QList<Core::Comment> getPendingComment() override;

    // 发帖
    void post(Core::Post &post) override;

    // 获取最新的十条帖子
    QList<Core::Post> getPosts(int cnt) override;
    // 审核帖子
    void acceptpost(Core::Post &comment) override;
    // 审核帖子
    void rejectpost(Core::Post &comment) override;
    // 获取待审核帖子
    QList<Core::Post> getPendingPost() override;

    // 评论帖子
    void postComment(Core::PostComment &comment) override;

    // 点赞帖子
    void likePost(Core::LikePost &likePost) override;


    XMysql();
private:


private:
    QSqlDatabase m_db;
};

#endif // XMYSQL_H
